home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19b.dsk / CASTLE RICHE.MAIN.bas < prev    next >
BASIC Source File  |  2023-02-26  |  21KB  |  319 lines

  1. 10  REM   **********************
  2. 20  REM   * CASTLE  RICHE.MAIN *
  3. 30  REM   *    BY  BEN GEER    *
  4. 40  REM   * COPYRIGHT (C) 1984 *
  5. 50  REM   * BY MICROSPARC, INC *
  6. 60  REM   * LINCOLN, MA. 01773 *
  7. 70  REM   **********************
  8. 80 :
  9. 90  GOTO 2740
  10. 100  GOSUB 120: IF F = 0  THEN  POP : PRINT "YOU DON'T HAVE ";QT$;N$;QT$;".": GOTO 1030
  11. 110  RETURN 
  12. 120 F = 0: IF NP = 0  THEN  RETURN 
  13. 130  FOR XX = 1 TO NP: IF P$(XX) = N$  THEN F = XX:XX = NP
  14. 140  NEXT XX: RETURN 
  15. 150  GOSUB 170: IF F = 0  THEN  POP : PRINT QT$;N$;QT$;" ISN'T HERE.": GOTO 1030
  16. 160  RETURN 
  17. 170 F = 0: IF NO(RM) = 0  THEN  RETURN 
  18. 180  FOR XX = 1 TO NO(RM): IF O$(RM,XX) = N$  THEN F = XX:XX = NO(RM)
  19. 190  NEXT XX: RETURN 
  20. 200  GOSUB 120: IF F = 0  THEN  GOSUB 150
  21. 210  RETURN 
  22. 220  GOSUB 120: IF F = 0  THEN  GOSUB 170
  23. 230  RETURN 
  24. 240 DI$ =  MID$ (DE$,(D -1) *5 +1,5 -(D = 2  OR D = 4)): RETURN 
  25. 250 H9 =  PEEK(36):V9 =  PEEK(37): RETURN 
  26. 260  PRINT "O.K.": GOTO 1030
  27. 270  PRINT CY$;: VTAB 2: HTAB 2: PRINT CV$;: VTAB 11: HTAB 38: PRINT CW$;CP$;
  28. 280  HPLOT 63,4 TO 63,91 TO 77,68 TO 77,16 TO 63,4: HPLOT 77,16 TO 203,16 TO 217,4 TO 217,91: HPLOT 203,16 TO 203,68 TO 217,91: HPLOT 203,68 TO 77,68
  29. 290  IF RM < >5  THEN 340
  30. 300  HCOLOR= 0: HPLOT 108,68 TO 84,68: HCOLOR= 3: HPLOT 108,40 TO 108,68 TO 105,72 TO 105,52 TO 108,48 TO 87,48 TO 87,40 TO 108,40
  31. 310  HPLOT 87,48 TO 84,52 TO 105,52: HPLOT 84,52 TO 84,72 TO 105,72: HPLOT 87,60 TO 101,60 TO 101,64 TO 87,64 TO 87,60
  32. 320  HCOLOR= 0: HPLOT 143,68 TO 119,68: HCOLOR= 3: HPLOT 119,32 TO 140,32 TO 140,72 TO 119,72 TO 119,32: IF IC = 0  THEN  HPLOT 122,44 TO 122,60: HPLOT 140,32 TO 143,32 TO 143,68 TO 140,72: GOTO 650
  33. 330  HPLOT 122,36 TO 136,36 TO 136,68 TO 122,68 TO 122,36: HCOLOR= 0: HPLOT 143,68 TO 154,68: HCOLOR= 3: HPLOT 140,32 TO 154,32 TO 154,76 TO 140,72: GOTO 650
  34. 340  IF RM < >8  THEN 400
  35. 350  HCOLOR= 0: HPLOT 84,68 TO 122,68: HCOLOR= 3: HPLOT 84,76 TO 84,56 TO 91,48 TO 91,56 TO 84,64 TO 119,64 TO 126,56 TO 91,56
  36. 360  HPLOT 84,72 TO 119,72 TO 126,64: HPLOT 119,64 TO 119,76: HPLOT 126,56 TO 126,68: HCOLOR= 0: HPLOT 133,68 TO 154,68: HCOLOR= 3
  37. 370  HPLOT 133,72 TO 133,56 TO 154,56 TO 154,64 TO 133,64: HPLOT 133,56 TO 136,52 TO 150,52 TO 154,56
  38. 380  HPLOT 136,52 TO 136,40 TO 150,40 TO 150,52: IF DR = 0  THEN  HPLOT 133,72 TO 154,72 TO 154,64: GOTO 650
  39. 390  HCOLOR= 0: HPLOT 154,68 TO 156,68: HCOLOR= 3: HPLOT 133,64 TO 136,72 TO 157,72 TO 154,64 TO 154,72: HPLOT 133,72 TO 136,80 TO 136,72: HPLOT 136,80 TO 157,80 TO 157,72: GOTO 650
  40. 400  IF RM < >4  THEN 630
  41. 410  HPLOT 161,24 TO 182,24 TO 182,44 TO 161,44 TO 161,24: HPLOT 164,28 TO 178,28 TO 178,40 TO 164,40 TO 164,28
  42. 420  HPLOT 167,33 TO 169,33 TO 169,35 TO 167,35 TO 167,33
  43. 430  IF BE = 0  THEN 520
  44. 440 X = 90:Y = 49: HCOLOR= 0: HPLOT X +2,Y +19 TO X +17,Y +19: HPLOT X +20,Y +19 TO X +32,Y +19: HPLOT X +35,Y +19 TO X +47,Y +19: HPLOT X +55,Y +19 TO X +60,Y +19: HCOLOR= 3
  45. 450  HPLOT X,Y TO X +5,Y +5 TO X +15,Y +5 TO X +20,Y TO X +20,Y +12 TO X +17,Y +15 TO X +17,Y +20 TO X +2,Y +20 TO X +2,Y +15 TO X,Y +12 TO X,Y
  46. 460  HPLOT X +20,Y +5 TO X +30,Y TO X +50,Y TO X +60,Y +10 TO X +60,Y +20 TO X +45,Y +32 TO X +30,Y +32 TO X +25,Y +25 TO X +30,Y +30 TO X +45,Y +30 TO X +55,Y +20
  47. 470  HPLOT  TO X +55,Y +17 TO X +47,Y +17 TO X +47,Y +20 TO X +40,Y +20 TO X +40,Y +17 TO X +45,Y +10
  48. 480  HPLOT X +40,Y +20 TO X +35,Y +20 TO X +35,Y +17 TO X +37,Y +15: HPLOT X +41,Y +15 TO X +32,Y +15 TO X +32,Y +20 TO X +25,Y +20 TO X +25,Y +17 TO X +30,Y +10
  49. 490  HPLOT X +25,Y +20 TO X +20,Y +20 TO X +20,Y +17 TO X +22,Y +15: HPLOT X +17,Y +15 TO X +26,Y +15: HPLOT X +2,Y +10 TO X +7,Y +10
  50. 500  HPLOT X +2,Y +10 TO X +7,Y +10: HPLOT X +12,Y +10 TO X +17,Y +10: HPLOT X +5,Y +17 TO X +7,Y +15 TO X +12,Y +15 TO X +15,Y +17
  51. 510  GOTO 650
  52. 520 X = 86:Y = 34: HCOLOR= 0: HPLOT X +47,Y +34 TO X +50,Y +34: HPLOT X +15,Y +34: HPLOT X +20,Y +34: HPLOT X +27,Y +34: HPLOT X +35,Y +34: HPLOT X +37,Y +34: HPLOT X +40,Y +34: HCOLOR= 3
  53. 530  HPLOT X,Y +10 TO X +5,Y +15 TO X +15,Y +15 TO X +20,Y +10 TO X +20,Y +22 TO X +17,Y +25 TO X +17,Y +30 TO X +2,Y +30 TO X +2,Y +25 TO X,Y +22 TO X,Y +10
  54. 540  HPLOT X +20,Y +15 TO X +27,Y +10 TO X +40,Y +10 TO X +50,Y +15 TO X +55,Y +25 TO X +65,Y +25 TO X +70,Y +20 TO X +70,Y +10 TO X +65,Y +5 TO X +60,Y +5
  55. 550  HPLOT  TO X +55,Y +10 TO X +57,Y +2 TO X +67,Y +2 TO X +72,Y +10 TO X +72,Y +20 TO X +65,Y +27 TO X +50,Y +27 TO X +50,Y +35 TO X +47,Y +35 TO X +45,Y +32
  56. 560  HPLOT  TO X +40,Y +35 TO X +40,Y +33 TO X +45,Y +30 TO X +40,Y +25 TO X +32,Y +25 TO X +32,Y +30 TO X +35,Y +35 TO X +30,Y +32 TO X +27,Y +35 TO X +25,Y +32 TO X +20,Y +35 TO X +25,Y +30
  57. 570  HPLOT  TO X +30,Y +30 TO X +30,Y +25 TO X +17,Y +25: HPLOT X +22,Y +25 TO X +22,Y +30 TO X +20,Y +30 TO X +15,Y +35 TO X +20,Y +32 TO X +22,Y +32
  58. 580  HPLOT X +37,Y +25 TO X +42,Y +30 TO X +37,Y +32 TO X +37,Y +35 TO X +40,Y +35
  59. 590  HPLOT X +3,Y +17 TO X +7,Y +17 TO X +7,Y +19 TO X +5,Y +19 TO X +5,Y +17: HPLOT X +17,Y +17 TO X +13,Y +17 TO X +13,Y +19 TO X +15,Y +19 TO X +15,Y +17
  60. 600  HPLOT X +7,Y +25 TO X +5,Y +27 TO X +5,Y +25 TO X +7,Y +22 TO X +12,Y +22 TO X +15,Y +25 TO X +15,Y +27 TO X +12,Y +25: HPLOT X +8,Y +22 TO X +8,Y +27
  61. 610  HPLOT X +12,Y +22 TO X +12,Y +27: HPLOT X +9,Y +25 TO X +11,Y +25: HPLOT X +25,Y +30 TO X +25,Y +25
  62. 620  GOTO 650
  63. 630  IF RM < >9  THEN 650
  64. 640  HPLOT 112,80 TO 112,64 TO 119,56 TO 147,56 TO 147,72: HPLOT 147,56 TO 140,64 TO 140,80: HPLOT 140,64 TO 112,64: HPLOT 119,64 TO 119,72: GOTO 650
  65. 650  IF NO(RM) = 0  THEN 870
  66. 660  FOR XX = 1 TO NO(RM):N$ = O$(RM,XX)
  67. 670  IF N$ < >"CANE"  THEN 690
  68. 680  HPLOT 73,87 TO 73,85 TO 94,85 TO 97,83 TO 94,82 TO 90,82 TO 90,80 TO 100,82 TO 100,85 TO 94,87 TO 73,87: GOTO 860
  69. 690  IF N$ < >"RUG"  THEN 710
  70. 700  HPLOT 125,82 TO 153,82 TO 147,87 TO 119,87 TO 125,82: GOTO 860
  71. 710  IF N$ < >"CHAIR"  THEN 730
  72. 720  HPLOT 161,76 TO 161,64 TO 171,64 TO 171,52 TO 182,56 TO 182,68 TO 171,64: HPLOT 161,64 TO 171,68 TO 171,80: HPLOT 182,68 TO 182,80: GOTO 860
  73. 730  IF N$ < >"BOOK"  THEN 790
  74. 740  IF RM = 5  THEN X = 189:Y = 76: GOTO 780
  75. 750  IF RM = 8  AND BP = 0  THEN X = 136:Y = 64: GOTO 780
  76. 760  IF RM = 4  OR RM = 8  THEN X = 103:Y = 79: GOTO 780
  77. 770 X = 91:Y = 70
  78. 780  HPLOT X,Y TO X +7,Y TO X +14,Y +4 TO X +7,Y +4 TO X +7,Y +8 TO X,Y +4 TO X,Y: HPLOT X +7,Y +8 TO X +14,Y +8 TO X +14,Y +4: HPLOT X,Y TO X +7,Y +4: GOTO 860
  79. 790  IF N$ < >"FLUTE"  THEN 820
  80. 800  HPLOT 154,83 TO 182,83 TO 182,87 TO 154,87 TO 154,83: HPLOT 156,83 TO 156,85 TO 159,85 TO 159,83: HPLOT 161,83 TO 161,87
  81. 810  FOR X = 164 TO 179  STEP 3: HPLOT X,85: NEXT : GOTO 860
  82. 820  IF N$ < >"KETTLE"  THEN 860
  83. 830 X = 189:Y = 71: IF RM = 5  THEN X = 90:Y = 35: HCOLOR= 0: HPLOT X,Y +13 TO X +14,Y +13: HPLOT X +3,Y +5 TO X +10,Y +5: HCOLOR= 3
  84. 840  HPLOT X +3,Y +4 TO X,Y TO X +14,Y TO X +10,Y +4 TO X +3,Y +4 TO X,Y +8 TO X +14,Y +8 TO X +10,Y +4
  85. 850  HPLOT X,Y +8 TO X,Y +16 TO X +14,Y +16 TO X +14,Y +8: GOTO 860
  86. 860  NEXT XX
  87. 870  PRINT CY$;: VTAB 13: HTAB 2: PRINT CV$;: VTAB 17: HTAB 38: PRINT CW$;CP$;
  88. 880  PRINT "YOU ARE IN THE ";N$(RM);".": PRINT "VISIBLE OBJECTS: ";: IF NO(RM) = 0  THEN  PRINT "NONE": GOTO 980
  89. 890  FOR X = 1 TO NO(RM):Q9 =  LEN(O$(RM,X)): IF X <NO(RM)  THEN Q9 = Q9 +2
  90. 900 Q8 =  PEEK(36) +Q9 - PEEK(33): IF Q8 < = 0  THEN 940
  91. 910  IF X = NO(RM)  THEN 930
  92. 920 Q8 = Q8 -1: IF Q8 = 0  THEN  PRINT O$(RM,X);",";: HTAB 18: GOTO 970
  93. 930  PRINT : HTAB 18: GOTO 950
  94. 940  IF Q8 = 0  AND X <NO(RM)  THEN  PRINT O$(RM,X);",": HTAB 18: GOTO 970
  95. 950  PRINT O$(RM,X);: IF X <NO(RM)  THEN  PRINT ", ";: GOTO 970
  96. 960  IF Q8 = 0  THEN  NEXT : GOTO 980
  97. 970  NEXT X: PRINT 
  98. 980  PRINT "VISIBLE DOORS: ";:DF = 0: FOR D = 1 TO 4: IF R(RM,D) = 0  THEN 1010
  99. 990  IF DF  THEN  PRINT ", ";
  100. 1000 DF = 1: GOSUB 240: PRINT DI$;
  101. 1010  NEXT D
  102. 1020  PRINT CY$;: VTAB 19: HTAB 2: PRINT CV$;: VTAB 23: HTAB 38: PRINT CW$;: VTAB V9 +1: HTAB H9 +1
  103. 1030  PRINT CA$;"1";: INPUT "COMMAND? ";C$: PRINT CA$;"0";: GOSUB 250
  104. 1040  IF  RIGHT$(C$,1) = " "  THEN C$ =  LEFT$(C$, LEN(C$) -1): GOTO 1040
  105. 1050  IF C$ = "N"  OR C$ = "E"  OR C$ = "S"  OR C$ = "W"  THEN C$ = "GO " +C$
  106. 1060  IF C$ = "DESCEND FROM CHAIR"  THEN C$ = "GO DOWN"
  107. 1070  FOR X = 1 TO NV: FOR YY = 1 TO NS(X): IF VB$(X,YY) =  LEFT$(C$, LEN(VB$(X,YY)))  THEN Y = YY:YY = NS(X): NEXT :V = X:X = NV: NEXT : GOTO 1100
  108. 1080  NEXT : NEXT 
  109. 1090  PRINT "HUH?": GOTO 1030
  110. 1100 N$ =  MID$ (C$, LEN(VB$(V,Y)) +1)
  111. 1110  ON RM GOTO 1120,1120,1120,1130,1320,1120,1120,1620,1120
  112. 1120  ON V GOTO 1980,1880,2100,2670,2180,2290,2330,2380,2380,2650,1090,2400,2420,2180,2670,2710,2480,2530,2600,2690
  113. 1130  IF V < >10  THEN 1170
  114. 1140  IF N$ < >"FLUTE"  THEN 1090
  115. 1150  GOSUB 100: IF BE  THEN  PRINT "THE BEAST SNORES EVEN MORE LOUDLY.": GOTO 1030
  116. 1160  PRINT "YOU HAVE SOOTHED THE SAVAGE BEAST! HE": PRINT "IS NOW SLEEPING PEACEFULLY.":BE = 1: GOTO 270
  117. 1170  IF BE = 0  AND (N$ = "SAFE"  OR N$ = "LOCK"  OR N$ = "BEAST"  OR V = 11)  AND (V < = 2  OR V = 4  OR V = 5  OR V = 11  OR V = 14  OR V = 16)  THEN  PRINT "THE BEAST HAS EATEN YOU!": GOTO 2630
  118. 1180  IF N$ < >"BEAST"  THEN 1230
  119. 1190  IF BE = 0  THEN 1090
  120. 1200  IF V = 5  THEN  PRINT "IT'S SLEEPING.": GOTO 1030
  121. 1210  IF V = 16  THEN 260
  122. 1220  GOTO 1090
  123. 1230  IF CH = 0  AND (N$ = "SAFE"  OR N$ = "LOCK"  OR V = 11)  THEN  PRINT "IT'S TOO HIGH TO REACH!": GOTO 1030
  124. 1240  IF CH  AND (V = 5  OR V = 4)  AND (N$ = "SAFE"  OR N$ = "LOCK")  THEN  PRINT "IT'S A COMBINATION LOCK! IT REQUIRES": PRINT "ONE TWO-DIGIT NUMBER FROM 01-99.": GOTO 1030
  125. 1250  IF V < >11  THEN 1120
  126. 1260  IF  VAL(N$) < = 0  THEN 1090
  127. 1270  IF  VAL(N$) < >CO  THEN  PRINT "WRONG COMBINATION!": GOTO 1030
  128. 1280  HCOLOR= 0: HPLOT 182,28 TO 182,40: HCOLOR= 3: HPLOT 178,28 TO 189,26 TO 189,42 TO 178,40: HCOLOR= 1: FOR X = 165 TO 177: HPLOT X,29 TO X,39: NEXT X
  129. 1290  PRINT CP$;CI$;"THE SAFE OPENS AND INSIDE IS THE": PRINT "RICHE FORTUNE! YOU WIN!!";CN$;: VTAB 23: HTAB 1: FOR X = 1 TO 5: PRINT  CHR$(7);: NEXT X
  130. 1300  INPUT "DO YOU WANT TO PLAY AGAIN?(Y/N) ";Y$: IF Y$ = "Y"  THEN  RUN 
  131. 1310  GOTO 2620
  132. 1320  IF N$ < >"ICEBOX"  THEN 1420
  133. 1330  IF V < >4  THEN 1360
  134. 1340  IF IC  THEN  PRINT "IT'S ALREADY OPEN.": GOTO 1030
  135. 1350 IC = 1: GOTO 270
  136. 1360  IF V < >15  THEN 1390
  137. 1370  IF IC = 0  THEN  PRINT "IT'S ALREADY CLOSED.": GOTO 1030
  138. 1380 IC = 0: GOTO 270
  139. 1390  IF V < >5  THEN 1440
  140. 1400  IF IC = 0  THEN  PRINT "IT'S CLOSED.": GOTO 1030
  141. 1410  PRINT "INSIDE IS A PASSAGE!": GOTO 1030
  142. 1420  IF N$ < >"PASSAGE"  THEN 1510
  143. 1430  IF V = 5  THEN  PRINT "IT'S DARK.": GOTO 1030
  144. 1440  IF V = 1  THEN 1470
  145. 1450  IF N$ = "PASSAGE"  THEN 1090
  146. 1460  GOTO 1120
  147. 1470  IF IC = 0  THEN  PRINT "IT'S CLOSED.": GOTO 1030
  148. 1480  IF RU = 0  THEN  PRINT "IT'S TOO COLD TO WALK IN THERE!": GOTO 1030
  149. 1490 RM = 4: IF BE  THEN  PRINT "A SAVAGE BEAST SLEEPS QUIETLY.": GOSUB 250: GOTO 270
  150. 1500  PRINT "A SAVAGE BEAST GUARDS THE SAFE!": GOSUB 250: GOTO 270
  151. 1510  IF N$ < >"STOVE"  THEN 1120
  152. 1520  IF V < >5  THEN 1550
  153. 1530  IF ST  THEN  PRINT "IT'S ON.": GOTO 1030
  154. 1540  PRINT "IT'S OFF.": GOTO 1030
  155. 1550  IF V < >8  THEN 1590
  156. 1560  IF ST  THEN  PRINT "IT'S ALREADY ON.": GOTO 1030
  157. 1570 ST = 1:N$ = "KETTLE": GOSUB 170: IF F  AND SO = 0  THEN SO = 1: PRINT "THE KETTLE IS NOW COOKING.": GOTO 1030
  158. 1580  GOTO 260
  159. 1590  IF V < >9  THEN 1120
  160. 1600  IF ST = 0  THEN  PRINT "IT'S ALREADY OFF.": GOTO 1030
  161. 1610 ST = 0: GOTO 260
  162. 1620  IF N$ < >"DRESSER"  AND N$ < >"DRAWER"  THEN 1800
  163. 1630  IF V < >4  THEN 1690
  164. 1640  IF DR  THEN  PRINT "IT'S ALREADY OPEN.": GOTO 1030
  165. 1650 N$ = "CANE": GOSUB 120: IF F = 0  THEN 1680
  166. 1660  PRINT "IT COMES OPEN! THE CANE DID THE TRICK!";:DR = 1: IF DO = 0  THEN NO(RM) = NO(RM) +1:O$(RM,NO(RM)) = "BOOK"
  167. 1670  GOTO 270
  168. 1680  PRINT "IT'S STUCK!": GOTO 1030
  169. 1690  IF V < >5  THEN 1730
  170. 1700  IF DR = 0  THEN  PRINT "IT'S CLOSED.": GOTO 1030
  171. 1710 N$ = "BOOK": GOSUB 170: IF F  AND BP = 0  THEN  PRINT "INSIDE IS A BOOK!": GOTO 1030
  172. 1720  PRINT "IT'S OPEN.": GOTO 1030
  173. 1730  IF V < >15  THEN 1120
  174. 1740  IF BP  THEN DO = 1: GOTO 1790
  175. 1750  IF DR = 0  THEN  PRINT "IT'S ALREADY CLOSED.": GOTO 1030
  176. 1760 N$ = "BOOK": GOSUB 170: IF F = 0  THEN DO = 1: GOTO 1790
  177. 1770  IF F <NO(RM)  THEN  FOR X = F TO NO(RM) -1:O$(RM,X) = O$(RM,X +1): NEXT X
  178. 1780 NO(RM) = NO(RM) -1:DO = 0
  179. 1790 DR = 0: GOTO 270
  180. 1800  IF N$ < >"BED"  AND N$ < >"SHEET"  THEN 1120
  181. 1810  IF V = 5  THEN  PRINT "THERE'S SOMETHING WRITTEN ON THE": PRINT "SHEET!": GOTO 1030
  182. 1820  IF V = 13  THEN  PRINT "IT SAYS:": PRINT QT$;"LEFT-HAND DIGIT="; INT(CO/10);QT$;".": GOTO 1030
  183. 1830  IF N$ < >"SHEET"  THEN 1870
  184. 1840  IF V = 2  THEN  PRINT "IT'S TOO SECURELY FASTENED.": GOTO 1030
  185. 1850  IF V = 16  THEN 260
  186. 1860  GOTO 1090
  187. 1870  GOTO 1120
  188. 1880  IF N$ < >"SOUP"  THEN 1930
  189. 1890 N$ = "KETTLE": GOSUB 170: IF F  THEN 1910
  190. 1900  GOSUB 120: IF F = 0  THEN 1920
  191. 1910  PRINT "YOU CAN'T GET IT OUT OF THE KETTLE": PRINT "WITH YOUR HANDS.": GOTO 1030
  192. 1920  PRINT QT$;"SOUP";QT$;" ISN'T HERE.": GOTO 1030
  193. 1930  IF N$ = "DRAWER"  THEN N$ = "DRESSER"
  194. 1940  GOSUB 150: IF NP = P8  THEN  PRINT "YOUR HANDS ARE FULL.": GOTO 1030
  195. 1950  IF N$ = "SAFE"  OR N$ = "STOVE"  OR N$ = "ICEBOX"  OR N$ = "BED"  OR N$ = "DRESSER"  OR N$ = "TABLE"  THEN  PRINT "IT'S TOO HEAVY TO LIFT.": GOTO 1030
  196. 1960 NP = NP +1:P$(NP) = N$: IF F <NO(RM)  THEN  FOR X = F TO NO(RM) -1:O$(RM,X) = O$(RM,X +1): NEXT X
  197. 1970 NO(RM) = NO(RM) -1: GOTO 270
  198. 1980  IF N$ < >"CHAIR"  THEN 2010
  199. 1990  IF CH  THEN  PRINT "YOU'RE ALREADY ON THE CHAIR.": GOTO 1030
  200. 2000  GOSUB 200:CH = 1: GOTO 260
  201. 2010  IF N$ < >"FLOOR"  AND N$ < >"DOWN"  THEN 2040
  202. 2020  IF CH = 0  THEN  PRINT "YOU'RE ALREADY STANDING ON THE FLOOR.": GOTO 1030
  203. 2030 CH = 0: GOTO 260
  204. 2040  FOR D = 1 TO 4: GOSUB 240: IF N$ =  LEFT$(DI$, LEN(N$))  THEN X = D:D = 4: NEXT : GOTO 2060
  205. 2050  NEXT D: PRINT "THERE'S NO SUCH DIRECTION.": GOTO 1030
  206. 2060  IF R(RM,X) = 0  THEN  PRINT "THERE'S NO ENTRANCE THERE.": GOTO 1030
  207. 2070  IF CH  THEN  PRINT "YOU HAVE FALLEN FROM THE CHAIR AND": PRINT "BROKEN YOUR LEG!": GOTO 2630
  208. 2080  IF RM = 4  AND RU = 0  THEN  PRINT "IT'S TOO COLD TO WALK IN THERE!": GOTO 1030
  209. 2090 RM = R(RM,X): GOTO 270
  210. 2100  IF N$ < >"SOUP"  THEN 2130
  211. 2110 N$ = "KETTLE": GOSUB 120: IF F  THEN 1910
  212. 2120  PRINT "YOU DON'T HAVE ";QT$;"SOUP";QT$;".": GOTO 1030
  213. 2130  GOSUB 100: IF F <NP  THEN  FOR X = F TO NP -1:P$(X) = P$(X +1): NEXT X
  214. 2140 NO(RM) = NO(RM) +1:O$(RM,NO(RM)) = N$:NP = NP -1: IF N$ = "RUG"  THEN RU = 0
  215. 2150  IF RM = 5  AND ST = 1  AND SO = 0  THEN SO = 1: PRINT "IT IS NOW COOKING ON THE STOVE."
  216. 2160  IF RM = 8  AND N$ = "BOOK"  THEN BP = 1
  217. 2170  GOTO 650
  218. 2180  IF N$ = "DOOR"  OR N$ = "ENTRANCE"  OR N$ = "WALL"  THEN 2280
  219. 2190  IF N$ < >"SOUP"  THEN 2220
  220. 2200 N$ = "KETTLE": GOSUB 220: IF F = 0  THEN 1920
  221. 2210 N$ = "SOUP": GOTO 2250
  222. 2220  IF V = 14  THEN 1090
  223. 2230  IF N$ = "AROUND"  OR N$ = N$(RM)  OR N$ = "ROOM"  THEN  PRINT "DO IT YOURSELF!": GOTO 1030
  224. 2240  GOSUB 200: IF N$ = "BOOK"  THEN  PRINT "THERE'S SOMETHING WRITTEN IN IT!": GOTO 1030
  225. 2250  IF N$ = "SOUP"  AND SO  THEN 2470
  226. 2260  IF N$ = "KETTLE"  THEN  PRINT "THERE'S SOME SOUP IN IT!": GOTO 1030
  227. 2270  IF N$ = "SOUP"  THEN  PRINT "IT'S UNCOOKED.": GOTO 1030
  228. 2280  PRINT "IT'S AN ORDINARY ";N$;".": GOTO 1030
  229. 2290  IF N$ < >""  THEN 1090
  230. 2300  PRINT "YOU ARE CARRYING";: IF NP = 0  THEN  PRINT " NOTHING.": GOTO 1030
  231. 2310  PRINT ": ";: FOR X = 1 TO NP: IF X >1  THEN  PRINT ", ";
  232. 2320  PRINT P$(X);: NEXT X: PRINT : GOTO 1030
  233. 2330  IF N$ < >"KETTLE"  AND N$ < >"SOUP"  THEN 1090
  234. 2340 TN$ = N$:N$ = "KETTLE": GOSUB 120: IF F = 0  THEN  PRINT "YOU DON'T HAVE ";QT$;TN$;QT$;".": GOTO 1030
  235. 2350  IF SO  THEN  PRINT "IT'S ALREADY COOKED.": GOTO 1030
  236. 2360  IF RM < >5  OR ST = 0  THEN  PRINT "THERE'S NO HEAT HERE.": GOTO 1030
  237. 2370 SO = 1: GOTO 1030
  238. 2380  IF N$ = "STOVE"  THEN  GOSUB 150
  239. 2390  GOTO 1090
  240. 2400  IF N$ < >"RUG"  THEN 1090
  241. 2410  GOSUB 100:RU = 1: GOTO 260
  242. 2420  IF N$ < >"BOOK"  THEN 2440
  243. 2430  GOSUB 100: PRINT "IT SAYS: ";QT$;"MR. RICHE'S FAMOUS MOTTO": PRINT "WAS 'PUT YOUR MONEY WHERE YOUR MOUTH": PRINT "IS.'";QT$: GOTO 1030
  244. 2440  IF N$ < >"SOUP"  THEN 1090
  245. 2450 N$ = "KETTLE": GOSUB 220: IF F = 0  THEN 1920
  246. 2460  IF SO = 0  THEN  PRINT "THE LETTERS ARE OBSCURED BY THE FROZENLIQUID.": GOTO 1030
  247. 2470  PRINT "IT'S ALPHABET SOUP! THE LETTERS SPELL": PRINT "OUT:": PRINT QT$;"RIGHT-HAND DIGIT=";CO - INT(CO/10) *10;QT$;".": GOTO 1030
  248. 2480  IF N$ < >"GAME"  THEN 1090
  249. 2490  PRINT : PRINT D$;"OPENGAMEFILE": PRINT D$;"DELETEGAMEFILE": PRINT D$;"OPENGAMEFILE": PRINT D$;"WRITEGAMEFILE"
  250. 2500  FOR X = 1 TO 9: PRINT NO(X): IF NO(X) >0  THEN  FOR Y = 1 TO NO(X): PRINT O$(X,Y): NEXT Y
  251. 2510  NEXT X: PRINT NP: IF NP >0  THEN  FOR X = 1 TO NP: PRINT P$(X): NEXT X
  252. 2520  PRINT RM: PRINT CO: PRINT ST: PRINT SO: PRINT RU: PRINT BE: PRINT IC: PRINT DR: PRINT CH: PRINT DO: PRINT BP: PRINT D$;"CLOSEGAMEFILE": GOTO 1030
  253. 2530  IF N$ < >"GAME"  THEN 1090
  254. 2540  ONERR  GOTO 2590
  255. 2550  PRINT : PRINT D$;"OPENGAMEFILE": PRINT D$;"READGAMEFILE"
  256. 2560  FOR X = 1 TO 9: INPUT NO(X): IF NO(X) >0  THEN  FOR Y = 1 TO NO(X): INPUT O$(X,Y): NEXT Y
  257. 2570  NEXT X: INPUT NP: IF NP >0  THEN  FOR X = 1 TO NP: INPUT P$(X): NEXT X
  258. 2580  INPUT RM,CO,ST,SO,RU,BE,IC,DR,CH,DO,BP: PRINT D$;"CLOSEGAMEFILE": POKE 216,0: PRINT CP$;: GOSUB 250: GOTO 270
  259. 2590  PRINT D$;"DELETEGAMEFILE": POKE 216,0: PRINT "THERE IS NO GAME FILE ON THIS DISK.": GOTO 1030
  260. 2600  IF N$ < >"GAME"  THEN 1090
  261. 2610  INPUT "ARE YOU SURE?(Y/N) ";Y$: IF Y$ < >"Y"  THEN 1030
  262. 2620  PRINT CY$;CP$;: TEXT : PRINT : PRINT D$;"IN#0": PRINT D$;"PR#0": VTAB 1: PRINT "BYE!": VTAB 12: PRINT D$;"FP"
  263. 2630  PRINT "BETTER LUCK NEXT TIME...": PRINT : INPUT "DO YOU WANT TO TRY AGAIN?(Y/N) ";Y$: IF Y$ = "Y"  THEN  RUN 
  264. 2640  GOTO 2620
  265. 2650  IF N$ < >"FLUTE"  THEN 1090
  266. 2660  GOSUB 100: GOTO 260
  267. 2670  IF N$ = "DRESSER"  OR N$ = "DRAWER"  OR N$ = "ICEBOX"  THEN  GOSUB 150
  268. 2680  GOTO 1090
  269. 2690  INPUT "ARE YOU SURE?(Y/N) ";Y$: IF Y$ = "Y"  THEN  RUN 
  270. 2700  GOTO 1030
  271. 2710  IF N$ = "SOUP"  THEN 1090
  272. 2720  GOSUB 200: IF F  THEN 260
  273. 2730  GOTO 1090
  274. 2740 NV = 20:P8 = 2: DIM P$(P8),N$(9),NO(9),O$(9,8),R(9,4),NS(NV),VB$(NV,22)
  275. 2750 D$ =  CHR$(4):DE$ = "NORTHEAST SOUTHWEST":QT$ =  CHR$(34)
  276. 2760 CA$ =  CHR$(1):CI$ =  CHR$(9):CK$ =  CHR$(11):CL$ =  CHR$(12):CN$ =  CHR$(14):CP$ =  CHR$(16)
  277. 2770 CV$ =  CHR$(22):CW$ =  CHR$(23):CY$ =  CHR$(25)
  278. 2780  HCOLOR= 1: HPLOT 0,0: CALL 62454: HCOLOR= 0: HPLOT 279,0 TO 279,191: HCOLOR= 3: HPLOT 0,0 TO 278,0 TO 278,191 TO 0,191 TO 0,0
  279. 2790 X = 16:Y = 16: GOSUB 2880:X = 238:Y = 16: GOSUB 2880:X = 238:Y = 127: GOSUB 2880:X = 16:Y = 127: GOSUB 2880
  280. 2800  PRINT CY$;CI$;: VTAB 9: HTAB 8: PRINT  SPC( 25): VTAB 10: HTAB 8: PRINT CA$;"2 C A S T L E   R I C H E ": VTAB 11: HTAB 8: PRINT  SPC( 25)
  281. 2810  VTAB 13: HTAB 15: PRINT CN$;CA$;"1";CL$;"BY ";CK$;"BEN GEER": VTAB 15: HTAB 4: PRINT CN$;CA$;"1";CL$;"COPYRIGHT 1984 BY MICROSPARC, INC."
  282. 2820  FOR X = 1 TO 9: READ N$(X),NO(X): IF NO(X) >0  THEN  FOR Y = 1 TO NO(X): READ O$(X,Y): NEXT Y
  283. 2830  FOR Y = 1 TO 4: READ R(X,Y): NEXT Y: NEXT X: FOR X = 1 TO NV: READ NS(X): FOR Y = 1 TO NS(X): READ VB$(X,Y): IF X < >6  THEN VB$(X,Y) = VB$(X,Y) +" "
  284. 2840  NEXT Y: NEXT X:RM = 1:X =  RND( - PEEK(78)):CO =  INT(99 * RND(1)) +1
  285. 2850  VTAB 17: HTAB 9: PRINT "(H";CL$;"IT ANY KEY TO BEGIN)";CK$;CA$;"0";: WAIT  -16384,128: POKE  -16368,0
  286. 2860  PRINT CP$;: HPLOT 3,3 TO 276,3 TO 276,187 TO 3,187 TO 3,3: HPLOT 3,91 TO 276,91: HPLOT 3,139 TO 276,139
  287. 2870  VTAB 19: HTAB 1: GOSUB 250: GOTO 270
  288. 2880  HPLOT X +24,Y +12 TO X +18,Y +6 TO X +6,Y +6 TO X,Y +12 TO X,Y +18 TO X +6,Y +24 TO X +18,Y +24 TO X +24,Y +30
  289. 2890  HPLOT  TO X +24,Y +36 TO X +18,Y +42 TO X +6,Y +42 TO X,Y +36: HPLOT X +12,Y TO X +12,Y +48: RETURN 
  290. 2900  DATA "FOYER",1,"CANE",0,3,0,2
  291. 2910  DATA "WEST HALLWAY",0,0,1,0,6
  292. 2920  DATA "EAST HALLWAY",0,0,8,0,1
  293. 2930  DATA "VAULT",1,"SAFE",0,0,5,0
  294. 2940  DATA "KITCHEN",3,"KETTLE","STOVE","ICEBOX",0,0,6,0
  295. 2950  DATA "BALLROOM",1,"RUG",5,2,0,0
  296. 2960  DATA "MUSIC ROOM",1,"FLUTE",0,0,8,0
  297. 2970  DATA "BEDROOM",2,"BED","DRESSER",7,0,9,3
  298. 2980  DATA "STUDY",2,"CHAIR","TABLE",8,0,0,0
  299. 2990  DATA 16,"ENTER","GO TO","GO INSIDE","GO INTO","GO IN","GO","CLIMB ONTO","CLIMB ON","CLIMB INSIDE","CLIMB INTO","CLIMB IN","CLIMB","STAND ON","STEP ONTO","STEP ON","STEP"
  300. 3000  DATA 4,"GET","TAKE","PICK UP","GRAB"
  301. 3010  DATA 5,"DROP","PUT DOWN","SET DOWN","THROW DOWN","THROW"
  302. 3020  DATA 5,"OPEN","PRY OPEN","PRY","PULL OPEN","PULL"
  303. 3030  DATA 6,"LOOK AT","LOOK INTO","LOOK IN","LOOK","EXAMINE","SEARCH"
  304. 3040  DATA 2,"INVENTORY","I"
  305. 3050  DATA 3,"COOK","HEAT","BOIL"
  306. 3060  DATA 8,"TURN ON","SWITCH ON","ACTIVATE","LIGHT UP","LIGHT","FIRE UP","FIRE","IGNITE"
  307. 3070  DATA 4,"TURN OFF","SWITCH OFF","SHUT OFF","DEACTIVATE"
  308. 3080  DATA 3,"PLAY","BLOW INTO","BLOW"
  309. 3090  DATA 22,"DIAL","TURN TO","COMBINATION","SPIN COMBINATION","SPIN TO","SPIN DIAL TO","SPIN KNOB TO","TURN DIAL TO","TURN KNOB TO","POSITION DIAL AT","POSITION KNOB ON"
  310. 3100  DATA "POSITION DIAL ON","POSITION KNOB AT","POSITION AT","POSITION ON","SET DIAL ON","SET DIAL AT","SET KNOB ON","SET KNOB AT","SET","TURN","SPIN"
  311. 3110  DATA 4,"WEAR","PUT ON","WRAP ON","WRAP"
  312. 3120  DATA 1,"READ"
  313. 3130  DATA 3,"EAT","DRINK","CONSUME"
  314. 3140  DATA 2,"CLOSE","SHUT"
  315. 3150  DATA 3,"KILL","HIT","DESTROY"
  316. 3160  DATA 2,"SAVE","STORE"
  317. 3170  DATA 2,"LOAD","RECALL"
  318. 3180  DATA 4,"QUIT","END","LEAVE","STOP"
  319. 3190  DATA 1,"RESTART"